package com.boyi.cycling_master.ui;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.boyi.cycling_master.R;
import com.boyi.cycling_master.application.CyclingApplication;
import com.boyi.cycling_master.bean.LoginResponseBean;
import com.boyi.cycling_master.bean.ResponseBean;
import com.boyi.cycling_master.common.ActivityStackManager;
import com.boyi.cycling_master.common.PostParams;
import com.boyi.cycling_master.common.SnackUtil;
import com.boyi.cycling_master.https.utils.UserInfoRetrofit;
import com.boyi.cycling_master.ui.base.BaseActivity;
import com.bumptech.glide.Glide;
import com.mikhaellopez.circularimageview.CircularImageView;
import com.rengwuxian.materialedittext.MaterialEditText;
import com.yuyh.library.imgsel.ImageLoader;
import com.yuyh.library.imgsel.ImgSelActivity;
import com.yuyh.library.imgsel.ImgSelConfig;

import org.w3c.dom.Text;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;


/**
 * @author Lee_Mofeel
 * @version 1.0
 * @date 2017/7/25/025 16:59
 * @Description 完成注册界面
 */

public class RegisterFinishActivity extends BaseActivity {
    @BindView(R.id.tv_btn_next)
    TextView tvBtnNext;
    @BindView(R.id.iv_user_img)
    CircularImageView ivUserImg;
    @BindView(R.id.iv_take_photo)
    ImageView ivTakePhoto;
    @BindView(R.id.edt_user_name)
    MaterialEditText edtUserName;
    @BindView(R.id.tv_btn_finish)
    TextView tvBtnFinish;
    // 图片加载
    private ImageLoader imageLoader;
    // 相册选择配置参数
    private ImgSelConfig config;
    // 图片二进制流字符串
    private String portrait;
    // 用户名
    private String userNick;

    @Override
    public int getContentViewId() {
        return R.layout.activity_finish_register;
    }

    @Override
    public void initLogic() {
        initGrallery();
    }

    @Override
    public void getBundleExtras(Bundle bundle) {

    }


    @OnClick({R.id.tv_btn_next, R.id.iv_user_img, R.id.iv_take_photo, R.id.tv_btn_finish})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.tv_btn_next:// 跳过按钮
                ActivityStackManager.getInstance().killAllActivity();
                startActivity(new Intent(RegisterFinishActivity.this,PersonCenterActivity.class));
                break;
            case R.id.iv_user_img:// 选择图片
                ImgSelActivity.startActivity(this, config, 2000);
                break;
            case R.id.iv_take_photo:
                break;
            case R.id.tv_btn_finish:
                userNick = edtUserName.getText().toString();
                if(TextUtils.isEmpty(userNick) || TextUtils.isEmpty(portrait)){
                    SnackUtil.SnackShort(edtUserName,"请选择图片和输入用户名 右上角可以跳过");
                }else{
                    Map<String,String> map = new HashMap<>();
                    map.put("userNick",userNick);
                    map.put("portrait",portrait);
                    /* 提交用户名和头像 */
                    UserInfoRetrofit.getInstance().postNickNameAndImg(new Callback<ResponseBean>() {
                        @Override
                        public void onResponse(Call<ResponseBean> call, Response<ResponseBean> response) {
                            if(response.body() == null)
                                return;
                            SnackUtil.SnackShort(edtUserName,response.body().getResultMessage());
                            if(response.body().getResultCode().equals("200")){
                                String userImg = response.body().getDataCollection();
                                if(!TextUtils.isEmpty(userImg)){// 如果上传成功则刷新本地数据 并且跳转到下个界面
                                    LoginResponseBean.DataCollectionBean userInfo =
                                            CyclingApplication.getInstance().getUserInfo();
                                    userInfo.setUserHead(userImg);// 将新的图片地址存入本地
                                    userInfo.save();// 保存
                                    ActivityStackManager.getInstance().killAllActivity();
                                    startActivity(new Intent(RegisterFinishActivity.this,PersonCenterActivity.class));
                                }
                            }
                        }

                        @Override
                        public void onFailure(Call<ResponseBean> call, Throwable t) {
                            SnackUtil.SnackShort(edtUserName,t.getMessage());
                        }
                    },PostParams.makeRequestBody(map));
                }
                break;
        }
    }

    private void initGrallery() {
        // 自定义图片加载器
        imageLoader = new ImageLoader() {
            @Override
            public void displayImage(Context context, String path, ImageView imageView) {
                // TODO 在这边可以自定义图片加载库来加载ImageView，例如Glide、Picasso、ImageLoader等
                Glide.with(context).load(path).into(imageView);
            }
        };
        // 自由配置选项
        config = new ImgSelConfig.Builder(this, imageLoader)
                // 是否多选, 默认true
                .multiSelect(false)
                // 是否记住上次选中记录, 仅当multiSelect为true的时候配置，默认为true
                .rememberSelected(false)
                // “确定”按钮背景色
                .btnBgColor(Color.GRAY)
                // “确定”按钮文字颜色
                .btnTextColor(Color.BLUE)
                // 使用沉浸式状态栏
                .statusBarColor(Color.parseColor("#3F51B5"))
                // 返回图标ResId
                .backResId(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material)
                // 标题
                .title("图片")
                // 标题文字颜色
                .titleColor(Color.WHITE)
                // TitleBar背景色
                .titleBgColor(Color.parseColor("#3F51B5"))
                // 裁剪大小。needCrop为true的时候配置
                .cropSize(1, 1, 200, 200)
                .needCrop(true)
                // 第一个是否显示相机，默认true
                .needCamera(false)
                // 最大选择图片数量，默认9
                .maxNum(9)
                .build();
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 图片选择结果回调
        if (requestCode == 2000 && resultCode == RESULT_OK && data != null) {
            List<String> pathList = data.getStringArrayListExtra(ImgSelActivity.INTENT_RESULT);
            for (String path : pathList) {
                // 得到图片
                Log.d("GralleryDebug", path);
                portrait = PostParams.fileToBase64String(path);
                Glide.with(this).load(new File(path)).into(ivUserImg);
            }
        }
    }
}
